﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DoveyGeneric
{
    /// <summary>
    /// 泛型约束的好处：
    ///     获取更多的功能
    ///     在调用时候，避免错误调用
    /// </summary>
   public class GenericConstraint
   {
        public static void ShowObject()
        {

        }


        //
        public static void Show<T>(T tPara) 
            where T:People
        {
            Console.WriteLine($"Type:{tPara.GetType().Name},Id:{tPara.Id},Name:{tPara.Name}");
        }

        public static void Work<T>(T tPara)
            where T : class, // 引用约束
                      IWork // 接口约束 // new()
        {
            Console.WriteLine($"Type:{tPara.GetType().Name}");
            tPara.Work();
        }

        public static T GetLength<T>()
        {
            return default(T);  // default关键字
        }
    }
}
